<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>
        // 定义一个发布者
        var publisher = {  //河南省疾控中心
            publish: function () { //河南省疾控中心-某一个发布人员
                //主题变化-发布通知
                dep.notice()
            }
        }

        //多个订阅者---每个订阅者都有一个update方法
        var subscriber1 = { //订阅者1
            update: function () {
                console.log("订阅者1");
            }
        }
        var subscriber2 = { //订阅者2
            update: function () {
                console.log("订阅者2");
            }
        }
        var subscriber3 = { //订阅者3
            update: function () {
                console.log("订阅者3");
            }
        }

        //需要一个主题对象
        function Dep() {
            this.subscriber = [subscriber1, subscriber2, subscriber3]
        }
        //给主题通过原型添加一个通知方法
        Dep.prototype.notice = function () {
            //通知订阅者更新
            this.subscriber.forEach(function (sub) {
                // sub 指的是每一个订阅者
                sub.update()
            })
        }

        //发布者发布消息，主题对象执行notice方法，进而触发订阅者执行update方法
        var dep = new Dep()

        publisher.publish()
    </script>
</body>

</html>